#pragma once
#include "FoGGEDef.h"
#include "iMessageSend.h"
#include "PredefinedModuleID.h"

namespace _FOGGE_
{

	namespace _MSG_
	{
		class _FoGGEExport MessageSender
		{
			friend class Tester;
			friend class aGGE;
		public:
			MessageSender(void)
			{
			}

			~MessageSender(void)
			{
			}

			Message *GetNewMassage(UINT MsgID)
			{
				return i_MessageSend->GetNewMassage(MsgID);
			}
			HRESULT SendMessage(Message *ptrMSG,Message *ptrRetMSG=NULL)
			{
				return i_MessageSend->SendMessage(ptrMSG,ptrRetMSG);
			}
			void PostMessage(Message *ptrMSG)
			{
				i_MessageSend->PostMessage(ptrMSG);
			}

			void MultiSendMessage(Message *ptrMSG)
			{
				i_MessageSend->MultiSendMessage(ptrMSG);
			}

			void BroadcastMessage(Message *ptrMSG)
			{
				i_MessageSend->BroadcastMessage(ptrMSG);
			}
		
		private:

			static iMessageSend * i_MessageSend;

		};
	}
	
}